本文为您介绍通过使用创建PV和PVC的方式使用OSS静态存储卷,及如何在PV中使用Secret。
注意事项
若您在应用模板中配置了securityContext.fsgroup参数,kubelet在存储卷挂载完成后会执行chmod
或chown
操作,导致挂载时间延长。
若已配置securityContext.fsgroup参数,且需要减少挂载时间。具体操作,请参见OSS存储卷挂载时间延长。
使用创建PV和PVC的方式使用OSS静态存储卷
创建PV。
您可以使用YAML文件或者通过容器服务控制台界面创建PV。
使用YAML文件创建PV
使用oss-pv.yaml文件创建PV。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-oss spec: capacity: storage: 5Gi accessModes: - ReadWriteMany storageClassName: oss flexVolume: driver: "alicloud/oss" options: bucket: "docker" url: "oss-cn-hangzhou.aliyuncs.com" path: "/path" akId: "LTAI4G6E3whAAKnzdRPx****" akSecret: "uRJeIi0cbahgWOhxncpp54wR5b****" otherOpts: "-o max_stat_cache_size=0 -o allow_other"
通过控制台界面创建OSS存储卷
登录容器服务管理控制台。
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
在集群管理页左侧导航栏中,选择
。在存储卷页面单击创建。
在创建存储卷对话框中,配置存储卷的相关参数。
参数
描述
存储卷类型
本示例中为OSS。
名称
创建的数据卷的名称。数据卷名在集群内必须唯一。本例为
pv-oss
。存储驱动
本示例选择Flexvolume。
总量
所创建存储卷的容量。
访问模式
默认为ReadWriteMany。
访问证书
选择访问OSS所需的保密字典。
选择已有保密字典:选择命名空间及保密字典。
新建保密字典:配置命名空间、名称、AccessKey ID及AccessKey Secret。
可选参数
您可以为OSS存储卷输入定制化参数,格式为:
-o *** -o ***
。Bucket ID
您要使用的OSS Bucket的名称。单击选择Bucket,在弹出的对话框中选择所需的Bucket并单击选择。
访问域名
如果Bucket和ECS实例位于不同地域(Region),请选择公网域名;若是经典网络,请选择私网域名。
标签
为该存储卷添加标签。
完成配置后,单击创建。
创建PVC。
使用oss-pvc.yaml文件创建PVC。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-oss spec: storageClassName: oss accessModes: - ReadWriteMany resources: requests: storage: 5Gi
创建Pod。
使用oss-deploy.yaml创建Pod。
apiVersion: apps/v1 kind: Deployment metadata: name: oss-static labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: pvc-oss mountPath: "/data" livenessProbe: exec: command: - sh - -c - cd /data initialDelaySeconds: 30 periodSeconds: 30 volumes: - name: pvc-oss persistentVolumeClaim: claimName: pvc-oss
通过Secret方式在PV中使用AccessKey
执行以下命令,创建Secret。
kubectl create secret generic osssecret --from-literal=akId='LTAI4G6E3whAAKnzdRPx****' --from-literal=akSecret='uRJeIi0cbahgWOhxncpp54wR5b****' --type=alicloud/oss -n default
osssecret
:Secret的名称,可以自行配置。akId
:AccessKey ID。akSecret
:AccessKey Secret。Secret类型:配置为
alicloud/oss命
名空间,需要与期望的Pod在相同的命名空间。
在PV中使用Secret。
在PV中通过
secretRef
字段定义Secret。apiVersion: v1 kind: PersistentVolume metadata: name: pv-oss spec: capacity: storage: 5Gi accessModes: - ReadWriteMany storageClassName: oss flexVolume: driver: "alicloud/oss" secretRef: name: "osssecret" options: bucket: "docker" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o max_stat_cache_size=0 -o allow_other"